Systems and methods for sharing user generated slide objects over a network

ABSTRACT

In one embodiment, a method includes, in response to an address match in connection with a request for a target structured document, identifying one or more slide objects associated with the target structured document, the one or more slide objects defining a set of anchor point definitions in the target structured document; identifying one or more anchor points corresponding to the one or more slide objects in a document object model (DOM) representation of the target structured document based on the set of anchor point definitions; accessing content corresponding to the one or more slide objects; and rendering the target structured document and the content of the one or more slide objects proximal to the identified anchor points.

CROSS-REFERENCE TO RELATED APPLICATIONS

The application is a continuation of U.S. application Ser. No.12/884,689, filed Sep. 17, 2010, which claims benefit under 35 U.S.C.§119(e) of U.S. Provisional Patent Application No. 61/243,431, entitled“Systems and Methods for Sharing User Generated Slide Objects Over aNetwork”, filed Sep. 17, 2009, the entire contents of each of which ishereby incorporated by reference.

TECHNICAL FIELD OF THE INVENTION

The present disclosure relates generally to networking and, moreparticularly, to systems and methods for enabling network users to sharepersonalized content including objects designated “slides” which containcontent directed to selected content objects, such as web pages, withother network users.

BACKGROUND OF THE INVENTION

Computer users today are able to access vast amounts of informationthrough various local and wide area computer networks. Throughproprietary networks and the Internet, a user may access informationfrom computer servers located in the same city, in a different state, orin a different country. One popular tool used for accessing and viewinginformation hosted on a network server is a web browser (e.g.,Microsoft's Internet Explorer™ or Mozilla's Firefox™). A web browser istypically installed on a user's computing device and it allows the userto access information associated with a particular uniform resourcelocator (URL) at a network server. Modern web browsers feature intuitivegraphical user interfaces that allow individuals without technicalexpertise to easily navigate from one website or webpage to another inpursuit of information the user desires.

While modern web browsing software has revolutionized the wayindividuals approach information retrieval over a network, such as theInternet, there are unfortunately many limitations associated with thissoftware. Among these limitations is the relative inability of a user tocontribute meaningful personal content to contacts and associates overthe Internet without such functionality being built by any particularwebsite itself. Conventional attempts to handle this issue have includedmaking various information sharing technologies available, such as weblogging, commonly enabled in the form of blogging sites (e.g.,www.blogger.com), wiki sites that allow user collaboration (e.g.,Wikipedia™), and social network sites (e.g., sites linked withapplications whereby users view the profiles created by other users instandardized templates, and visibility is designated by somecharacteristic sets of “social rules”). Each of these platforms allows auser limited capability to share his or her views with others havingaccess to the same network or web sites. These technologies shareseveral important drawbacks, among which are that a user's views and/oraccessible content are limited to a single website's data content. Inthese scenarios, a user's ideas are effectively walled off from contentresiding on other websites. When a user wishes to comment (e.g., withtextual, audio, graphical, and/or video input) on content residing on aparticular webpage data across multiple web-venues, to share personalcontent with his or her contacts and associates, these other forms ofcommunication are of little use if contextual addition is part of themessage. Typically, a user is forced to write his or her thoughts downin an email and then send them directly to another user. A composedemail may include a hypertext link in the body of his email. This methodof sharing comments is unwieldy. It limits the utility of the user'scomments because the comments are not visibly positioned next to the webcontent of interest, and decouple context from the content, which mayalter the message of the content.

SUMMARY OF THE INVENTION

Particular embodiments enable users to define one or more slide objectsthat, when processed by a client-side application, are operative tooverlay content (such as comments, multimedia objects, and the like) onviewed web pages and other structured documents. Embodiments of theinvention allow the user to personalize content that they deemnoteworthy or otherwise desire to share over a network such as theInternet, including various content based web pages. By way of example,a user may add a slide object including content to be displayed proximalto content of interest in an underlying content object, such as a webpage or other structured document. The slide object can include text,hyperlinks, multimedia objects, code modules, and any other suitablecontent. In one example embodiment, personal content in the form of aslide object is presented to viewers directly over a website. Particularembodiments enable users to pick and choose which slide objects fromother users they would like to view when they are browsing the Internetor other networks. By way of example, users can become contacts orotherwise establish relationships over the same social network and theircollective comments can be viewed amongst selected members of theirsocial network in both present and future network browsing sessions. Insome implementations, the functionality underlying particularembodiments can be realized as a browser plug-in software component to auser's existing web browser application.

Particular embodiments may include a dedicated web server. Such anexample server can provide a central location for users to manage theirpersonal “activity pages” which serve as a repository of contentviewable by the user (whether created by the user, or another user) aswell as a user-controlled interface for preferences. In particularembodiments, a user can browse the activity pages of other users andselect to send messages directly to the other users when the user wishesto communicate desired informational content. In particular embodiments,a user is also able to see which websites have been recently augmentedby slides with personal content and, furthermore, which users of theirnetwork created said slide-centric content. The web server may alsoallow users to view their account data, and the content-creation data ofother users, by logging in using a browser client or a plug-inapplication.

In some embodiments, this or another server may also store commentsentered by various users along with the coordinates, such as, by way ofexample, Cartesian coordinates, (e.g., horizontal and vertical pixelpoint coordinates) associated with each comment as selectivelypositioned relative to webpage content augmented by slides. Inparticular embodiments, slide objects are stored in a document objectmodel (DOM) representation. In this way, the comments may be recalledfor positional display over the same webpage when another social networkuser elects to view comments for the same webpage with their own webbrowser application. The presentation of personal data content to aparticular user may take place without any required actions on the partof the user for requesting the presentation to occur. By way of example,a user can simply log into the slide object service and then browse awebsite using a browser client, while a browser plug-in applicationcommunicates with the dedicated server, thereby affecting displayedcontent of one or more web sites to which the browser client maynavigate.

Some embodiments may also include capabilities to greatly increase theeffectiveness of directed advertising displayed to a user during webbrowsing activities via identifying websites and virtual localitieswhich may provide higher value for advertisers for their particularproducts or services. By way of example, the website content augmentedby slides by each user may be grouped with other slides and websites tocreate a “story” of user's psychology. In an example embodiment, bothcomments created by a user and comments viewed by the user may betracked and analyzed for the purposes of matching pointed advertisingschemes to either certain personas of users or by identifying websiteswhich represent certain ideas or topics not explicitly stated in theunderlying website's content, but are more properly weighed toparticular content via the addition of user-generated slides even thoughthe underlying website.

BRIEF DESCRIPTION OF THE DRAWINGS

Particular example embodiments are described in detail below withreference to the following Figure drawings:

FIG. 1A illustrates an example networked computing system in accordancewith an embodiment.

FIG. 1B illustrates an example embodiment of a network architecture inaccordance with an embodiment.

FIG. 2 illustrates a view of an example graphical user interface showinga browser based plug-in application in accordance with an embodiment.

FIG. 3 illustrates a flowchart illustrating an example method for addinga slide object to a webpage in accordance with an embodiment.

FIG. 4 illustrates an example graphical interface component of a browserbased plug-in application in accordance with an embodiment.

FIG. 5 illustrates an example graphical user interface showing a browserbased plug-in application for creating a slide object as it would appearalong with a target webpage in accordance with an embodiment.

FIG. 6 illustrates an example graphical user interface showing a webbrowser displaying a webpage with a comment and a browser based plug-inapplication in accordance with an embodiment.

FIG. 7 illustrates an example graphical user interface showing apersonal website homepage in accordance with an embodiment.

FIG. 8 illustrates an example graphical user interface showing a slideobjects listing of a personal website homepage in accordance with anembodiment.

FIG. 9 shows a flowchart illustrating an example process for rendering aweb page including one or more slide objects in accordance with anembodiment.

FIG. 10 illustrates an example graphical user interface of a web browserdepicting a webpage with a slide object and a directed advertisement inaccordance with an embodiment.

FIG. 11 illustrates an example computing system architecture.

DETAILED DESCRIPTION OF THE INVENTION

In particular embodiments, a web browser plug-in application is utilizedto facilitate content or object-selecting over selected structureddocuments, such as web pages of interest, as well as viewing slideobjects authored or generated by other users. Some embodiments alsorelate to generating valuable anonymous, aggregate metrics associatedwith various users' content-creating histories. Particular embodimentsprovide a means for users to post and share personal or non-nativecontent on a given webpage with other selected users having access tothe same webpage or other content object. Particular embodiments alsoprovide a webpage interface that enables users to view personal contentslide objects made by both themselves and others within the same viewingmedia. Some embodiments further provide a means for third partyadvertisers to use the information derived from the aggregated users'online content-creating activities, along with their network'sslide-creating activities, to generate directed advertising campaigns,including by not limited to assessing which web sites may be morefavorable for a given advertising campaign. In this way, particularembodiments add another level of interactivity amongst users ofsocial-networks and the World Wide Web, and greatly improve each user'sown Internet experience. Particular embodiments work seamlessly andoperate in tandem with existing software already residing on a user'scomputing device. In this manner, a user will not have to relearn newsoftware or switch out of their browser program to utilize differentaspects of particular embodiments.

In accordance with particular described embodiments, systems and methodsfor allowing a user to attach comments and media data content (e.g.,including, but not limited to, textual, audio, graphical, and videocontent) as slide objects, to various content objects, such as webpages, is provided. In various example embodiments, the system includes,but is not limited to, one or more client devices having both a webbrowser and a browser-based application in the form of, by way ofexample, a plug-in software application executing in the context of thebrowser or as an extension to the browser, one or more server devicesstoring the webpage, and a network facilitating data communicationsbetween the at least one client device and the at least one serverdevice. The client device is configured to access the webpage over thenetwork with the web browser, create a slide object with thebrowser-based application, and then associate the slide object with thewebpage and the user. In one implementation, the server device isconfigured to store the slide object as well as positional datacorresponding to the slide object, and then retrieve the stored slideobject and the positional data in response to a request of a seconduser. In various example embodiments, users each have a personal websiteaccount stored at the server device that may include self-generatedslide objects, slide objects generated by other users, or a group ofslide objects associated with the same webpage content. In a particularimplementation, users can independently alter slide object content bylogging in to their respective personal website accounts and accessingthe content of any particular slide objects. The creation of a slideobject with the browser based application of the client device, mayinclude placing the slide object at a specific positional location overthe webpage and setting the specific positional location to thepositional data.

As described above, a method for associating a directed advertisingscheme with a user may include tracking a user's content-creating orcommenting activities over a web browsing session, storing trackinginformation associated with the web browsing session, and then analyzingthe stored tracking information to determine information relevant to adirected advertising scheme, such as information relevant to the webproperties to target and information related to relevant advertisementsto display over a webpage being viewed by the user. In various exampleembodiments, the content-creating activities also include the userassociating various slide objects with several web pages viewed duringthe web browsing session, and the stored tracking information includesinformation related to a content-creating path amongst the web pagescommented during the web browsing session. At least one relevantadvertisement may include content in the form of textual, audio,graphical, and video data.

In accordance with an example embodiment, FIG. 1A illustrates a computernetwork 100 including several distributed computing devices 102, 104,106, 110, 112, and 114. In the illustrated embodiment, computer network100 includes client devices (or systems) 102 and server devices (orsystems) 104, 106, 110, 112, and 114. The client devices 102 arecomputing devices generally used by an end user. These client and serverdevices 102, 104, 106, 110, 112, and 114 may generally be any directed,special or general purpose computing devices or systems capable ofcommunicating through a wireline or wireless network 108, examples ofwhich may include, by way of example and not by way of limitation,personal computers, server computer device or systems, laptop computers,cell phones, smart phones, personal electronic devices, set top boxes,and gaming devices. Client device 102 may generally connect to otherdevices through a dedicated service provider 104. The service provider104 (e.g., an ASP, ISP, MSP, or TSP) is typically a server, router,gateway or set of servers, routers, and gateways, that provide variousservice resources to the client device 102. The service provider 104also generally provides access to other network resources throughnetwork 108.

In an example embodiment, the network 108 may be a private orproprietary network, a series of interconnected proprietary networks, apublic network, or the Internet, or any combination thereof. Through thenetwork 108, the service provider 104 and computing devices connected tothe network 108, such as the client device 102 may gain access to theoffered computing resources of servers 106, 110, 112, and 114. One ormore of servers devices 106, 110, 112, and 114 may provide a variety ofspecialized services including, but not limited to, email, data filetransfer, or webpage serving. By way of example, server 106 may also becapable of maintaining software and hardware resources necessary toimplement example embodiments. Server 106 may utilize any commonly usedoperating system including, by way of example and not by way oflimitation, UNIX™, Linux™, and Windows™. In a particular embodiment,server 106 is a repository of various public and/or personal home pagesassociated with the various example embodiments. In conjunction withsoftware residing within the client device 102, the utilities andapplications residing on server 106 enable a user of client device 102to manage to his or her personal service accounts and to add or viewslide objects (slide objects and comments are used interchangeablyherein), to public or personal content objects, such as web pages andwebsites.

In an example embodiment, server 106 may be responsible for storingcomments and making them available to a client device 102 whenappropriate or necessary (e.g., when a third party request is made toview the comment). Like the other servers on the network 110, 112, and114, server 106 may be implemented on a bank of computers. Other serversmay also be present on network 108 to provide computing resources andapplication information to distributed computing devices through thenetwork 108. Other client devices 102 may also be connected to theservice provider 104 at any given time to facilitate data transmissionand retrieval. There may also be multiple service providers and clientdevices connected to network 108 at any given time. The connectionsbetween the client computing devices 102, service providers 104, andservers 106, 110, 112, and 114 may generally be implemented using anywireless or wireline technology or a combination thereof including butnot limited to Wi-Fi, 3G and 4G, or satellite wireless networks, WAN andLAN wireline networks, including, coaxial cable, fiber optic cable,telephone line, or power line cable.

An example network architecture is described with respect to the systemillustrated in FIG. 1B. The system of FIG. 1B comprises a multi-tierarchitecture that includes a front-end tier 120 that relies uponbrowser-based applications to facilitate client-side websiteinteractions (e.g., user input along with browser-based application andwebpage output display), a middle-tier 122 incorporating one or morenetwork servers for data processing and system resource allocation, anda back-end tier 124 incorporating one or more network servers having oneor more system databases (e.g., any combination of volatile ornon-volatile memory resources) for storing various system resources thatcan be accessed and/or allocated by instruction from the systemmiddle-tier 122.

In an example embodiment, the system of FIG. 1B includes a client 126connection to the client database (CDB) content through load-balancers128 a-c. The load balancers 128 a-c of the network architecture shown inFIG. 1B may be used in high-demand environments. For enterprise-levelsystems, single servers may be ineffective for some embodiments. By wayof example, the website may receive too many queries at any given timethat a single server would be overwhelmed. Multiple servers can handlemany more queries simultaneously and therefore may improve the overallexperience to the end users. When multiple web servers are deployed tohandle traffic to a single site, load balancers 128 a-c distribute thetraffic load amongst them. This is a primary function of the loadbalancers. The load balancers 128 a-c determine the route anddestination of various instructions from the client to respectivedatabase servers 130. Servers within the mid-tier 122 may include Webserver functionality that communicates with Web browser applicationscontrolled by the client. The load-balancers 128 a-c can maintain aconstant, permanent connection between the client 126 and the serversusing remote procedure call over HTTP. This connection further allowsfor communication between the back-end 124 and the client 126.

In an example embodiment, the back-end 124 may include a CDB contentserver 130 for storage of system resource data. The CDB server 130 caninclude a plurality of database clusters 132, 134 a-c. Each cluster mayinclude a master CDB 132 which may link to and/or control several slavesCDBs 134 a-c. The clusters maintain system data redundancies ofidentical information such that all resource data is duplicated amongstthe master 132 and the slave 134 a-c CDBs. The system is able todifferentiate between the master and slave CDBs of various clusters. Thelevel of redundancy in the system may be controlled by a systemadministrator or automatically from the master CDB. The databaseclusters may be fully redundant in which case a complete and faithfulcopy of the master CDB is stored in the slave CDBs as well. Thisconfiguration gives the system protection against failure of any onedatabase because all the system data may be stored in multiple places.Another advantage of using full redundancy between master and slave CDBsis that any system database can handle a read request from the webservers or load balancers. In one example embodiment, while writerequests must always be handled by the master database to ensurecoherence between all CDBs, any CDB can handle a read request. Thismakes this configuration especially efficient because several requestsfor information can be handled simultaneously. Alternatively, there maybe no redundancy between each of the CDBs. In this configuration, eachCDB retains a different portion of the logical database. All read andwrite requests may be handled by the master CDB because the master CDBmay contain a master table that allows it to forward the request to theproper slave CDB.

In particular embodiments, a user is able to generate personalizedcontent in the form of one or more slide objects directed to a contentobject (such as webpage or website), including but not limited to acomment, highlighter function, images, and audio or video content. Inparticular embodiments, a plug-in software component executing withinthe client 102 is operative to capture data, such as the URL of arequested page, anchoring data describing an anchor point from which anoverlayed comment or other content embodied in a slide object isrendered on the page, an access control list (ACL), slide object'sidentity number, and user-generated content corresponding to the slideobject(s). The ACL provides a list of all users that have been allocatedread and/or write permission for individual user generated content. TheACL may identify users individually or in relation to user groups. Forexample, when commenting or overlaying slide objects on a given webpage, a user may identify a set of individual users to view the slideobject or identify certain groups, such as “all contacts,” or aconfigured subset or group of contacts. As can be seen in FIG. 1B, usergenerated content data is sent to the CDB Master which propagates thedata to the CDB slave. The CDB clusters then check the ACL against theUser Database (UDB) 144 to determine the selected readers of the data,so this data can be accessed by the permitted user(s).

In particular embodiments, Website 140 is able to communicate withserver 142, which may also be found in the middle tier 122 of thenetwork hierarchy. Through the server 142, the Website 140 is also ableto check authentication of users. In this network embodiment, the UDB144 can control access to data. When information necessary to fillrequests in line with the implementation of example embodiments isstored at a system database (DB) server, the UDB 144 may act as agatekeeper. It maintains records of users of the system and also keepstrack of relationships between the users. In particular embodiments, theUDB 144 controls which users have access to which posted slide objectsand may ensure that users do not see unwanted or irrelevant slideobjects and that only their trusted parties are able to see their slideobjects.

Some embodiments may also include Notification Server 136 and MessageTransfer Agent (MTA) 138. Both of these servers may act as bridgesbetween the middle-tier 122 and the clients 126 at the front-end tier120. The Notification Server 136 is aware of various user settings andpreferences (e.g., email preferences) and notifies the MTA 138 when anew notification request has been processed. In an example embodiment,this notification includes instructions as to the source and recipientaddress of a message as well as the message content. The MTA 138 passesnotification messages between components of the middle tier 122 and theclients 126 at the front-end tier 120.

In accordance with a particular example embodiment, FIG. 2 depicts aview of a graphical user interface 200 displaying a given website, alongwith a browser-based application 230. In various embodiments, thegraphical user interface 200 may be implemented by a common orconventional web browser as a web browser application that operates inconjunction with website 140. A web browser application is generally acomputer program configured to run on a user's computing device (i.e.,client device 102) that enables the user to connect to various serverhosted web pages available over the network 108. A non-exhaustive set ofcommon web browsers include, by way of example, Internet Explorer™,Firefox™, Safari™, and Opera™. The web browser programs provide astandard viewing window 214 that displays the informational and visualcontent of the website (the term “website” and “webpage” are usedinterchangeably herein). The URL of the content object presently beingrendered and viewed is displayed in the address box 210 of the webbrowser graphical user interface 200. Address box 210 enables a user toinput an address (e.g., URL) for a desired content object, such as awebpage. The content of the website generally includes graphical images216, text and hyperlinks 218. In various example embodiments, thewebpage can also include audio, video, and other types of web content.The hyperlinks 218 allow a user to jump to another portion of the samewebpage or to another webpage altogether without requiring manual inputof a desired webpage's address. To further enable the user to navigatethe rendered page, scrolling bars 220 and 222 are generally included. Byclicking and/or dragging these bars or buttons, a user may selectivelyview other portions of the webpage, which do not entirely fit theimmediately viewable areas of the graphical user interface 200.Browser-based application 230, in one implementation, is operative tocause the browser to display a graphical toolbar menu to provide theuser with the slide creation/commenting functionality of particularembodiments.

In a particular embodiment, browser-based application 230 is implementedas a compatible plug-in to the browser software installed in client 102.A plug-in generally includes a computer program that interacts with ahost application (such as a web browser) and executes in the context ofthe host application or as an extension to the host application toprovide one or more additional functions to the user without the userexiting the host application. By way of example, the functions andfeatures of the plug-in may be displayed to the user in such a way thatthey appear to be an extension of the native functionality of the hostapplication. Plug-ins may provide additional functionality supplied andsupported by third parties. Plug-ins interact with the host applicationthrough application programming interfaces. The host applicationsupplies information through the interfaces that allow the plug-in toexecute properly. There are often many advantages of using plug-ins fordevelopment and to provide services to users. Plug-ins can be developedand implemented without altering the host application. Furthermore,plug-ins can be added and deleted dynamically by the user withoutaffecting the operation of the host application. Plug-ins can also beused to provide functionality for the host application that was notenvisioned when the host application was developed. Of course, in otherimplementations, the content-creating and display functions describedherein can be incorporated into the browser application itself.

Browser-based application 230 provides an interface that enables a userto add content, such as a comment, as an overlay to a currently renderedwebpage. More particular, as will be described in more detail below, auser may highlight or otherwise select a portion of text or othercontent from which to anchor a slide object that embodies text and/orother content added by a user. In particular embodiments, thebrowser-based application 230 causes an interface to be generated thatincludes, by way of example, a ‘new comment’ button 232, a‘notification’ button 234, a ‘contacts’ button 236, a ‘this page’ button238, a ‘settings’ button 240, and a ‘more’ button 242. These buttons mayfurther provide access to other options, typically organized in menuform, available to the user. For instance, in an example embodiment, the‘new comment’ button 232 brings up (e.g., causes to be rendered) suchoptions as creating a new comment or slide object or a highlighterfunction that enables a user to highlight text or images or,alternately, a target mode in which whatever DOM element or node thecursor is positioned over is highlighted thereby facilitating thepositioning of an anchor point of a slide object with a desired object.In some embodiments, while in such a target mode, the rest of thedocument (other than the DOM node or element the cursor is positionedover) is made gray or less visible (more opaque) relative to the objectof interest. This may, for example, be achieved by modifying theCascading Style Sheet (CSS) properties of the structured document.

The ‘notification’ button 234 provides the user with further optionssuch as the option to view slide objects created by other users to whichhe or she has been given access. The ‘notification’ button 234 allows auser to view such comments, similar to an “activity” page of a web sitewithout having to login or otherwise access the web site directly. The‘contacts’ button 236 enables the user to manage the other users (e.g.,“contacts”) in his or her personal (“social”) networks. The menu oroptions affiliated with the contacts button 236 may include updatingcontact lists, forming user or comment lists, or deleting contacts. The‘this page’ 238 button provides the user with the ability to organizethe viewing of comments, content and highlights on the present (e.g.,currently rendered) page. By way of example, utilizing options found inthe sub-menus of button 238, the user is able to filter slide objectsattached to the website, alter the look and feel of the slide objectsand highlights on the webpage, a scatter option, or block slide objectsposted and attached to the present webpage. The filtering of the slideobjects and the other actions taken by the users pertaining to thepresently viewed webpage can be based on a variety of methods. Forinstance, slide objects and highlights can be filtered by a user or byattributes shared by certain users. Also, slide objects and highlightscan be filtered by time of posting or frequency of postings by the user.Other filtering methods and attributes may also be employed withoutlimitation. The ‘settings’ button 240 enables the user to update otheraspects of his or her account. Options found in the settings sub-menumay include, by way of example and not by way of limitation, log-in andlog-off options and account settings options. The ‘more’ button 242allows for further options to be available to the user withoutnecessarily taking up any more space on the display. The ‘more’ buttonmay also include updateable or temporary functionality associated withexample embodiments.

In a particular example implementation, the menu utilizes amenu/sub-menu system. By way of example, each button in the root menu230 triggers into view a submenu with the listed options and,potentially, others. These menus in turn may also include submenus oftheir own. Also, they may include selectable options, check boxes, ortext boxes that allow the user to interact or configure variousembodiments. However, embodiments of the present disclosure are notlimited to a menu/submenu interface and can be implemented in a varietyof other ways. For example, in other embodiments, the options for eachof the buttons may be implemented with additional toolbars. The optionsavailable under each button may be implemented with text or withgraphical representations. Also, the root menu 230 and its submenus orchildren toolbars may be persistent or hideable. They also may be rootedsomewhere on the screen or may be allowed to float around the graphicaluser interface of the browser without any fixed position. Furthermore,the look and feel of the menuing system may be customizable by the user.

FIG. 3 depicts a flowchart 300 illustrating an example embodiment of amethod for generating a comment for a webpage. The process begins at 302when the user opens a web browser with the customized tool bar interfaceassociated with application 230. From the customized user interface, theuser selects the slide-creating function at 304 that enables the user tocreate a new slide object. The user may then target specific objects(e.g., a picture, video, window, etc.) or portions of text (e.g., aword, group of words, sentence, paragraph, etc.) at 306 to which toanchor or attach a comment or other slide object as just describedabove. At 308, the user selects recipients for the comment and createsthe slide (creates and adds the comment text or the slide object). Theslide object is associated with the webpage as well as the position forthe content of the slide at 312. In one particular embodiment, theposition is stored as a set of positional coordinates and/or a set ofanchor points and a set of positional coordinates that define an offset.

More particularly, in particular embodiments, application 230 stores orcauses the browser to store the slide object in a document object modelDOM representation either locally in the client 102 or remotely in adatabase in or accessible by client 102 (such as the servers describedabove). By way of reference, when a page is requested by the browser,HTML code is transmitted to the browser so that the browser can renderthe requested page. However, and in accordance with particular exampleembodiments, the browser first constructs a DOM representationequivalent of the HTML content for the page. The DOM is generallyarranged hierarchically in the form of a tree of DOM elements or nodes,as will be appreciated by those of skill in the art. The browser thenrenders the page in the particular client viewing window of the browserutilizing the DOM representation. All the text and other contentspecified in the underlying HTML code is translated by the browser intoDOM elements of finer and finer granularity. By way of example, at afirst level, the entire document (page) may be represented by a DOM rootnode. Progressing down the tree, the document may include a picture,video, interactive window, block of text, and/or other content includingscripts and various calls to APIs represented in finer and finer detailby subsequent level nodes. In a particular implementation, application230 effectively operates in conjunction with a canvas element of theunderlying HTML (e.g., canvas element specified as part of HTML 5).

When a user desires to select an object for reference, the user selects(e.g., via a mouse cursor) text or other objects by highlighting orsimply placing his or her cursor over the object where the user desiresto anchor the slide object as described above. The former may involvethe application 230 determining the smallest DOM node or set of DOMnodes that contain the desired text. Application 230 then calls an APIthat provides application 230 with the positional information for thetext or object of interest from which to anchor the slide object. By wayof example, in a particular embodiment, application 230 calls the APIgetBoundingClientRect executing within the browser that then determinesthe position of the underlying DOM node(s) corresponding to the text orobject of interest from which to anchor the slide object. ThegetBoundingClientRect returns a value that may include the left, top,right, and bottom positional coordinates or properties (or the positionof one corner as well as the width and height) of the box or rectanglecharacterizing the position of the DOM node(s) within the page layoutrendered by the browser for the particular user's viewing window (e.g.,size and aspect ratio of the viewing window in DOM representation). Inaddition, the user may move the position of the text box that appearsand contains the content added by the user relative to the anchorelements defined by the user. The distance vector defining the offsetbetween the bounding box of the anchor DOM elements and the comment boxcan be stored in association with the slide object as well. Application230 may store or cause to be stored either locally or remotely the slideobjects including such information as: the slide creator (e.g., userresponsible for making the slide object), the positional coordinates inthe DOM representation returned by the getBoundingClientRect API, anydeliberate offset (e.g., in pixels) chosen by the user between thecomment and the underlying anchor object (e.g., the one or more DOMnodes that comprise the anchor text or object), the anchor DOM elementsidentified by the user and/or the application 230, as well as thecomment (e.g., user-generated content itself) entered by the user fordisplay with the slide object. After the user defines a given slideobject, the application 230 may modify the DOM representation of thepage (without necessarily modifying the HTML or other markup languagecode or content transmitted to the browser—this is generally storedseparately) to include the slide objects.

In addition, the slide object data may also be transmitted to a centraldatabase or other remote hosts for display on browsers of other users asthey encounter the same underlying page that corresponds to the URL ofthe current page. Still further, server 106 may also access the databaseof slide objects to publish a content-creating activity feed when usersaccess web pages corresponding to the service provided by server 106.For example, when a user accesses an account home page, for example, theserver 106 may access a database of slide objects and assemble a feed ofslide objects where the user is identified in an ACL or otherwiseallowed to view the slide objects. The feed can be restricted to thelatest N objects. Other filters can also be used as well. Accordingly, auser need not use the plug-in application 230 to view slide objects. Inaddition, a user, accessing the web page showing the slide objects, canrespond to slide objects by accessing a slide object within the contextof the activity feed page. For example, using AJAX or similartechnologies, the user can select a given slide object and add contentin response to one or more comments or other content associated with theslide object.

In an example embodiment, the client captures pertinent anchor pointssuch as images, links, and words and records the relative distance andlocation of those points. This anchoring data is stored in associationwith the slide object that also includes other data, such as textcomments and other content added by the user. One form of anchoring usesa target anchoring process. Data is scanned from a radius of aparticular targeted word, or other anchored element, at exponentiallyincreasing intervals to pick up words and offsets or derivatives ofthose words or elements. The target element is found by retrieving theprevious anchor data including all occurrences of the target word orelement. The target word with the least deviation from the expectedoffsets is chosen after log-transforming the observed and expectedoffsets and squaring the differences. Another form of anchoring usesdynamic content anchoring process which indexes picked up words orelements to a slide object identity. Then for each page load, slideobjects whose anchor point definitions match the words or elements onthe page are found. A distance function and confidence function iscomputed. Selected or anchored elements that have a confidence above apredetermined threshold are then displayed. The present invention is notlimited to these methods of anchoring comments. Furthermore, thesemethods can be used in conjunction with each other or others tofacilitate the placement of the comments.

FIG. 4 illustrates a slide object generation interface 400 in accordancewith a particular example embodiment. Text box 402 enables the user togive a particular slide object a name or title. Button 404 provides anoption to the user for canceling the comment and eliminating the newmessage interface from the screen. Text box 406 provides an interfaceenabling the user to input the body of his or her message. Tabs 408,shown on either side of the slide (or message box), enables the user toscroll back and forth and view other parts of the message not presentlyviewable in the text box (e.g., due to the size or aspect ratio of thetext box). In particular, such a feature may greatly facilitate theuser's ability to alter the text of the message or to proofread themessage. In text box 410, the user is able to create the list ofrecipients for the slide object. These are the other users that whenactive on the network will be able to see comment once it issuccessfully completed. When the user is finished with the slide objectand has selected the recipients, the user may select the OK button 412to finalize the message and post it to the website. In a particularembodiment, once the message is posted, the user interface shell 400 isno longer displayed. If the user wishes to cancel the message, the usermay select a cancel button 414. Similarly, once the cancel button isselected, the user interface shell may no longer be displayed. The lockbutton 416 gives the author of the comment control over how others caninteract with the comment once it is posted. In particular embodiments,if the comment is locked, no other user can alter or add to it.Conversely, if the comment is unlocked, other users may be free to addto it once it is posted.

The features just described and illustrated with reference to FIG. 4 arenot meant to be limiting. Additionally, in some embodiments, not allfeatures shown may be present. Furthermore, other features may bepresent in the slide object authoring user interface. In one exampleembodiment, the message box 406 may house features common in textauthoring programs such as spell check and grammar check. The messagebox 406 may also include features that allow for formatting of the textor include special effects such as smiley faces, among others.Additionally, a user may be able to modify the slide object's visualtransparency relative to the underlying HTML content of the page. By wayof example, application 230 may modify the CSS properties of the slideobject such that the slide object content is partially transparent. Theinterface may also provide a toggle function that enables users totoggle slide objects on and off; that is, to selectively show and notshow various slide objects (this may be achieved by modifying theopacity of the drawings using CSS properties). The message box 406 mayfurther offer options that allow for graphical representations ordrawings to be made. Furthermore, in additional or alternateembodiments, the message box 406 may include options for postingmultimedia comments or other content. These options may enable a user torecord an audio and/or a video comment, for example. The message box 406may allow the user to create multimedia comments or to create a commentout of one or more saved files of various types and formats. Inparticular embodiments, the recipient box 410 may also includeadditional features. By way of example, the recipient box 410 mayinclude drop down lists of others in the user's contacts list. Recipientbox 410 may also include auto-complete capability for other users in theuser's contacts list or a look-up directory for users. The lock button416 may also be implemented with additional functionality. Throughadditional menus, the user may be able to lock the comment for someother users but not for others. Furthermore, the layout of the slideobject creation user interface may take a variety of forms and may becustomizable by the user.

FIG. 5 illustrates an example web browser screenshot 500 in accordancewith an embodiment in which a user is adding a slide object including acomment to a webpage. The screenshot 500 includes a typical browser viewof a website complete with hyperlinked text 518. The toolbar 530 ofparticular embodiments is shown in the lower left hand corner of themain viewing window of the browser. The toolbar may include severalbuttons such as, by way of example, a ‘new comment’ button 532, a‘notification’ button 534, a ‘contacts’ button 536, a this page' button538, a ‘settings’ button 540 and a ‘more’ button. In the illustratedembodiment, the slide creation user interface shell 550 is alsodisplayed, superimposed over the webpage. The comment creation userinterface shell includes the message input shell 506 along with thescrolling tabs 508, the recipient box 510, and the OK 512, Cancel 514,and Lock 516 buttons. In this illustration, the text has already beentyped in the message box 506 and the recipients are already listed inthe recipient box 510. FIG. 5 also illustrates a method of placement forthe comment used in an example embodiment. In this particular example,the comment in the slide object is directed to the text “Energy &Environment” 560, located on the webpage. Once the shell 550 isdisplayed in the browser window, the user can position it anywhere onthe browser window. By lining up the tip of the message box 506 with theright-hand side of the Energy & Environment text 560, the user mayensure that the completed comment will by tied or anchored to thatportion of the text (e.g., to the underlying DOM node(s)) when thewebpage is viewed later by him or herself or other users viewing thepage. However, various embodiments are not limited to this technique ofslide object placement as other techniques can also be usedalternatively or in addition to the technique just described.

FIG. 6 shows an example screenshot 600 of an example webpage presentedin a browser along with a comment 606 and the toolbar 630 in accordancewith an example embodiment. In the illustrated embodiment, the websitedisplayed in the viewing window of the browser also includes hyperlinkedtext 618. A slide object is anchored to the “Energy & Environment” text660 shown in the middle of the screen. As described above, in someimplementations, the slide object is not actually part of the website orthe underlying markup language code (e.g., HTML, XML, XHTML, etc.) onwhich it is viewed and anchored. That is, as described above inparticular embodiments, the underlying HTML of the website is notaltered when the slide object is created and placed. Rather, the plug-inapplication 230 reads the DOM representation of the page and modifiesthe DOM representation in order to affect a rendering of the slideobject (including comments, graphics, etc.) over the underlying pagecontent. More particularly, the application 230 anchors the slide objectto the DOM representation of the underlying HTML. Therefore, theapplication 230 does not affect the underlying HTML, although for somebrowsers, such as Firefox™ the slide object is included in the DOMrepresentation.

In particular embodiments, the plug-in software that is responsible forthe slide object creation toolbar and the slide object creation userinterface shell is also responsible for downloading all applicable slideobjects affiliated with the website presently being viewed in thebrowser by the user and displaying them in their proper locations alongwith the content of the website. Alternatively, in other embodiments orimplementations, separate plug-ins are responsible for differentaspects. For example, a plug-in may be responsible for the creation ofthe slide objects while another plug-in is responsible for displayingthem. The slide objects are overlaid or superimposed on the websitepage. In an alternate embodiment, if a user has created a screenshot ofthe underlying content, the screenshot is uploaded to a separate set ofstatic data servers (SDS) which remains separate from the mid-tier 122and back-end 124 servers. The SDS has direct communication to transmitstatic data, such as images, with the client without the need of amid-tier server.

In one example embodiment, the slide objects may also be stored locallyat the client device 102 and loaded by the plug-in software as the uservisits websites. The anchoring of the slide objects may take severalforms. In one particular embodiment, the position of the slide object isspecifically tied to an object (e.g, an HTML element) or set of objectson the webpage. When the webpage is loaded, a routine of the softwareparses the HTML code and finds the slide object(s) and theircorresponding anchor points (e.g., underlying DOM node(s)). Moreparticularly, suppose a page is requested that includes one or moreslide objects generated by the current user or one of the user'scontacts who have specified that the current user may view his or herslide objects. An example process 1100 for rendering one or more slideobjects over a requested structured document (e.g., such as a web page)is described with reference to FIG. 9. As described above, when a targetpage is requested and HTML or other markup language content is receivedby a browser to render the target page, the browser may first constructa corresponding DOM representation of the underlying web content. Thebrowser then renders the target page using the DOM representation. Inparticular embodiments, in parallel with the DOM construction or therendering, application 230 first determines if there is a URL match at1102. In one implementation, the URL match can match to an entire URL orto a sub-string or pattern of a URL. In another embodiment, application230 may also determine whether one or more aspects of the page match aset of anchor point definitions of one or more slide objects in additionto, or in lieu of, a URL matching process. By way of example,application 230, based on slide object information stored locally orremotely, first determines whether or not there are slide objects to berendered over the target page. If there are slide objects, process 1100proceeds at 1104 with determining which DOM nodes represent anchorpoints of corresponding slide objects. By way of example, thisdetermination at 1104 may be performed by application 230 prior to, inparallel with, or after the DOM nodes are first rendered by the browser(this step may also be continuously or periodically performed during auser's browsing session). In response to a determination that a DOM nodeis associated with an anchor point, application 230 may callgetBoundingClient Rect at 1106 to retrieve the positional coordinates ofthe bounding box(es) surrounding the DOM node(s) associated with theanchor point(s) based on the current size and aspect ratio of thecurrent browser viewing window. At 1108, application 230 accesses anyoffset information as well as the personalized content to be displayedwithin the slide object, among other information used to render theslide objects. Application 230 then causes the content of the slideobject(s) to be rendered at 1110 over target page content in theposition specified by step 1106 and in conjunction with any stored andretrieved offset specified by the slide object creator and potentiallyin conjunction with a border of the viewing window (e.g., the positionof the displayed comment may change based on the current position of therendered anchor object relative to the border of the viewing window). Inanother embodiment, each webpage, to which one or more slide objects hasbeen added, is broken into a standard Cartesian grid. When a slideobject is created and placed by a user on the webpage, the location isstored in coordinate form along with the content of the comment. Whenthe webpage is displayed again, the coordinates of the slide object areused to properly position the slide object with respect to the contenton the page.

It should be noted that, in some example embodiments, when the clientviewing window is resized or re-shaped, the application 230 may have tore-query the browser (and the getBoundingClientRect API) to retrieve thenew DOM coordinates of the anchor point DOM nodes. However, scrolling orotherwise traversing a given page rendered in the client viewing windowgenerally doesn't change the DOM representation, and hence, theapplication 230 does not have to re-query the browser for new DOMcoordinates. More specifically, when a page is rendered within aparticular client viewing window, the entire page is translated into aDOM representation, not just the rendered portion.

FIG. 7 depicts an example personal ‘home page’ or website 700 of theuser in accordance with an embodiment. The ‘home page’ may be accessedthrough a browser in a similar fashion to other websites. The URL forthe ‘home page’ is shown in the address bar of the web browser 702. Inthe top page of the viewing window the browser is the primary usertoolbar 704. Displayed in this toolbar is the user's name as well asseveral menu options including but by no means limited to Network 708,Setting 710, and Log Out 712. The Network button contains optionsallowing the user to update his contact list, create lists or groups ofcontacts, or delete contacts. The network button may also includeoptions that allow a user to create a list of his favorites and manageslide objects from these individual users. The Setting button allows theuser to manage his own account. This button includes menus with optionsthat allow the user to change his contact information and his billinginformation. The Log Out button allows the user to log out of thewebpage with a single click. The list of buttons shown in the main paneof FIG. 7 is meant to be representative and in no way should it beconsidered limiting or exhaustive. Other options can also be added tothe menus. Also, other buttons can be added to this toolbar as well. Forinstance, in one embodiment, a privacy button could be available thatallows a user to control how much personal information is made availableto other users or third party vendors. Alternatively, privacy settingscould be located under another button such as Network 708 or Setting710. The home page may also contain the avatar for the user 706. Theavatar can be a picture, a drawing, or some other representation chosenby the user. If the user does not choose an avatar, the avatar may beleft blank or set to a default picture.

A toolbar may contain various menu options including All 714, Page 716,Text 718, Images 720, Video 722, the ‘grid’ button 740, the ‘list’button 742, and a search window 744. The All button 714 provides theuser with a list of options. Some of these options allow the user tohandle interactions with all contacts listed in his directory ordisplayed on his webpage. The Page button 716 contains options thatcontrol the display of the user's home page. The Text 718, Images 720,and Video 722 buttons in concert allow the user to manage media on hishome page. This media may have been generated by him or by others. Thesebuttons include options that allow the user to save text, images, orvideo locally or to upload text, images, or video to the user's homepage. In an embodiment, these buttons may contain search options thatallow a user to search for a particular type of media. The grid button740 allows the user to organize his contacts profiles as a grid. Thelist button 742 allows the user to his contacts profiles as a list. Thetext window 744 allows for searching for content from the homepage. Thiswindow can be used to search for users or slide objects. In anembodiment of the present invention, the text window 744 is enhanced toprovide for more extensive searching. The user can use this searchoption to find slide objects by website location, date the slide objectwas made or updated, author name, text or any other attribute or datafield of the slide object. Furthermore, users can be searched by name,attributes stored in their user profile, websites augmented via slides,or some other criteria.

In the lower pane of the browser viewing window, the profiles 724, 728,732, and 736 of the user's contacts are displayed. Each contact profiledisplay has a name attached to his profile and also has an avatar 726,730, 734, and 738 displayed along with their profile. Comments made andcontent added in slide objects of each of the users are prominentlydisplayed in their profiles 724, 728, 732, and 736. These slide objectscan be listed in the manner of 724, 732, and 736. They can also bestacked like in profile 728. The user can also leave slide objects forother users through his homepage. This can be accomplished in variousways. In an embodiment, the user may click on a user profile and add acomment to a slide object through a message box interface. In anembodiment, the user may select an add comment button through one of thetoolbars (not shown).

FIG. 8 shows a screenshot 800 of the user reading a set of commentsembedded in a slide object associated with another user's profile. Inthis case the user is reading off a set of comments 830, 832, 834embedded in a slide object of Frank Jones' profile. Frank's avatar 826is also prominently displayed. When a set of slide objects or aconversation is selected, the comments and/or other content aredisplayed in a text reader 828. The text reader features an exit button840 which when pressed causes the window to no longer be displayed.Also, the text reader features a slide bar that allows the user toscroll up and down bringing additional comments into the viewing window.These features are meant to be representative and are in no way limitingor exhaustive. In other embodiments, the text reader may include optionsallowing the window to be resized or moved. Furthermore, the text readermay include a text input feature which allows the user to add to theconversation from his home page. Also, in an embodiment, additionalinformation may be presented along with the comment such as hyperlinksto the pertinent website.

FIG. 10 shows a screenshot 1000 of the viewing window of a browser of anexemplary embodiment of the invention showing a directed advertisement1080. Also displayed in the viewing window of the browser is a slideobject including a comment 1006 attached to text 1060 also displayed inthe window. Hyperlinked text 1018 is also displayed in the window. Themain toolbar 1030 for generating comments in accordance with anembodiment of the invention is also shown. The advertisement ispertinent to the user and is added to the viewing window. While theadvertisement in screenshot 1000 is text-based, the invention is not solimited. Advertisements can include audio, video, graphics and picturesor any combination thereof.

While the foregoing processes and mechanisms can be implemented by awide variety of physical systems and in a wide variety of network andcomputing environments, the server or computing systems described belowprovide example computing system architectures for didactic, rather thanlimiting, purposes.

FIG. 11 illustrates an example computing system architecture, which maybe used to implement a server or a client host. In one embodiment,hardware system 1200 comprises a processor 1202, a cache memory 1204,and one or more executable modules and drivers, stored on a computerreadable medium, directed to the functions described herein.Additionally, hardware system 1200 includes a high performanceinput/output (I/O) bus 1206 and a standard I/O bus 1208. A host bridge1210 couples processor 1202 to high performance I/O bus 1206, whereasI/O bus bridge 1212 couples the two buses 1206 and 1208 to each other. Asystem memory 1214 and one or more network/communication interfaces 1216couple to bus 1206. Hardware system 1200 may further include videomemory (not shown) and a display device coupled to the video memory.Mass storage 1218, and I/O ports 1220 couple to bus 1208. Hardwaresystem 1200 may optionally include a keyboard and pointing device, and adisplay device (not shown) coupled to bus 1208. Collectively, theseelements are intended to represent a broad category of computer hardwaresystems, including but not limited to general purpose computer systemsbased on the x86-compatible processors manufactured by Intel Corporationof Santa Clara, Calif., and the x86-compatible processors manufacturedby Advanced Micro Devices (AMD), Inc., of Sunnyvale, Calif., as well asany other suitable processor.

The elements of hardware system 1200 are described in greater detailbelow. In particular, network interface 1216 provides communicationbetween hardware system 1200 and any of a wide range of networks, suchas an Ethernet (e.g., IEEE 802.3) network, a backplane, etc. Massstorage 1218 provides permanent storage for the data and programminginstructions to perform the above-described functions implemented in theservers or clients, whereas system memory 1214 (e.g., DRAM) providestemporary storage for the data and programming instructions whenexecuted by processor 1202. I/O ports 1220 are one or more serial and/orparallel communication ports that provide communication betweenadditional peripheral devices, which may be coupled to hardware system1200.

Hardware system 1200 may include a variety of system architectures; andvarious components of hardware system 1200 may be rearranged. Forexample, cache 1204 may be on-chip with processor 1202. Alternatively,cache 1204 and processor 1202 may be packed together as a “processormodule,” with processor 1202 being referred to as the “processor core.”Furthermore, certain embodiments of the present invention may notrequire nor include all of the above components. For example, theperipheral devices shown coupled to standard I/O bus 1208 may couple tohigh performance I/O bus 1206. In addition, in some embodiments, only asingle bus may exist, with the components of hardware system 1200 beingcoupled to the single bus. Furthermore, hardware system 1200 may includeadditional components, such as additional processors, storage devices,or memories.

In one implementation, the operations of the server-side or client-sideprocesses described herein are implemented as a series of executablemodules run by hardware system 1200, individually or collectively in adistributed computing environment. In a particular embodiment, a set ofsoftware modules and/or drivers implements a network communicationsprotocol stack, parallel computing functions, slide generatingprocesses, and the like. The foregoing functional modules may berealized by hardware, executable modules stored on a computer readablemedium, or a combination of both. For example, the functional modulesmay comprise a plurality or series of instructions to be executed by aprocessor in a hardware system, such as processor 1202. Initially, theseries of instructions may be stored on a storage device, such as massstorage 1218. However, the series of instructions can be stored on anysuitable storage medium, such as a diskette, CD-ROM, ROM, EEPROM, etc.Furthermore, the series of instructions need not be stored locally, andcould be received from a remote storage device, such as a server on anetwork, via network/communications interface 1216. The instructions arecopied from the storage device, such as mass storage 1218, into memory1214 and then accessed and executed by processor 1202.

An operating system manages and controls the operation of hardwaresystem 1200, including the input and output of data to and from softwareapplications (not shown). The operating system provides an interfacebetween the software applications being executed on the system and thehardware components of the system. Any suitable operating system may beused, such as the LINUX Operating System, the Apple Macintosh OperatingSystem, available from Apple Computer Inc. of Cupertino, Calif., UNIXoperating systems, Microsoft (r) Windows(r) operating systems, BSDoperating systems, and the like. Of course, other implementations arepossible. For example, the nickname generating functions describedherein may be implemented in firmware or on an application specificintegrated circuit.

Furthermore, the above-described elements and operations can becomprised of instructions that are stored on storage media. Theinstructions can be retrieved and executed by a processing system. Someexamples of instructions are software, program code, and firmware. Someexamples of storage media are memory devices, tape, disks, integratedcircuits, and servers. The instructions are operational when executed bythe processing system to direct the processing system to operate inaccord with the invention. The term “processing system” refers to asingle processing device or a group of inter-operational processingdevices. Some examples of processing devices are integrated circuits andlogic circuitry. Those skilled in the art are familiar withinstructions, computers, and storage media.

The present disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsherein that a person having ordinary skill in the art would comprehend.Similarly, where appropriate, the appended claims encompass all changes,substitutions, variations, alterations, and modifications to the exampleembodiments herein that a person having ordinary skill in the art wouldcomprehend.

I claim:
 1. A method comprising: in connection with a target content object rendered by a client computing device: identifying a slide object associated with but distinct from the target content object, the slide object defining an anchor point definition in the target content object; identifying, in a representation of the target content object, at least one anchor point corresponding to the slide object, based on the anchor point definition; and rendering, at the client computing device, the content of the slide object as an overlay to the target content object, the slide object being rendered relative to the target content object in a position proximal to the identified anchor point.
 2. The method of claim 1, wherein the target content object is a structured document.
 3. The method of claim 2, wherein the structured document is an HTML document.
 4. The method of claim 1, wherein the representation is a document object model (DOM) representation.
 5. The method of claim 1, wherein the content for the slide object comprises multimedia content created by a first user; and wherein the rendering the content of the slide object comprises delivering the multimedia content to the client application.
 6. The method of claim 1, wherein identifying a slide object comprises querying a remote database based on an identifier corresponding to the target content object and a user identifier associated with a user of the client application.
 7. A method comprising: in connection with a target content object rendered by a client computing device: identifying a slide object associated with but distinct from the target content object; identifying an anchor point corresponding to the slide object; and rendering, at the client computing device, the content of the slide object as an overlay to the target content object, the slide object being rendered relative to the target content object in a position proximal to the identified anchor point.
 8. The method of claim 7, wherein the target content object is a structured document.
 9. The method of claim 8, wherein the structured document is an HTML document.
 10. The method of claim 7, wherein the representation is a document object model (DOM) representation.
 11. The method of claim 7, wherein the content for the slide object comprises multimedia content created by a first user; and wherein the rendering the content of the slide object comprises delivering the multimedia content to the client application.
 12. The method of claim 7, wherein identifying a slide object comprises querying a remote database based on an identifier corresponding to the target content object and a user identifier associated with a user of the client application.
 13. A method comprising: in connection with a target content object rendered by a client application of a client computing device: identifying one or more slide objects associated with but distinct from the target content object; accessing content corresponding to the one or more slide objects; and rendering at the client computing device the content of the one or more slide objects as an overlay to the target content object.
 14. The method of claim 13, wherein the target content object is a structured document.
 15. The method of claim 14, wherein the structured document is an HTML document.
 16. The method of claim 13, wherein rendering the content comprises modifying a Document Object Model (DOM) representation of the target content object by adding one or more HTML elements that are operative to cause a client application to render the one or more slide objects.
 17. The method of claim 13, wherein the content for a first slide object of the one or more slide objects comprises multimedia content created by a first user; and wherein rendering the content comprises delivering the multimedia content to the client application.
 18. The method of claim 13, wherein identifying one or more slide objects comprises querying a remote database based on an identifier corresponding to the content object and a user identifier associated with a user of the client application.
 19. A method comprising: presenting, responsive to a command issued by a user at a client host computing device, a slide creation interface as an overlay to a content object rendered in a client application window; in response to user input: accessing, at the client host computing device, content distinct from the content object and access control information inputted by the user via the slide creation interface; creating a slide object comprising an identifier associated with the content object, the content and access control information inputted by the user; and transmitting the slide object to a remote database.
 20. The method of claim 19, wherein at least one of target elements is a text element.
 21. The method of claim 19, wherein at least one of the target elements is a multimedia object embedded in the content object.
 22. The method of claim 19, wherein the access control information comprises one or more user identifiers.
 23. The method of claim 19, wherein the access control information identifies or corresponds to a group of users.
 24. The method of claim 19, further comprising recording audio information generated by the first user and including the generated audio information in the content of the slide object.
 25. The method of claim 19, further comprising recording video information generated by the first user and including the generated video information in the content of the slide object.
 26. A system comprising: a user account database maintaining accounts for one or more users, each account including a user identifier; a slide object database storing one or more slide objects, each slide objecting comprising: an identifier associated with a content object; content distinct from the content object; and access control information; a computing device comprising a memory, a processor, and computer program code stored on non-transitory, computer-readable media, the computer program code comprising instructions operative to cause the processor to: store slide objects received from remote hosts associated with users identified in the user account database; access, in response to a request from a first client computing device operated by a first user, the slide object database to retrieve one or more slide objects for the first user, wherein the access control information associated with each slide object controls at least in part whether a slide object is retrieved for the first user; transmit a response to the client computing device, the response including at least one of the retrieved slide objects; and control access to slide objects for transmitting of the response based on access control information of the slide objects.
 27. The system of claim 26, wherein the computer program code further comprises instructions operative to cause the processor to: receive a second request for one or more slide objects from a second client computing device operated by a second user, wherein the request identifies a content object; access, in response to the second request from the second client computing device, the slide object database to identify one or more slide objects that correspond to the content object; return at least one of the identified slide objects if the access control information of the one or more identified slide objects indicates that the second user is allowed access.
 28. A system comprising: a user account database maintaining accounts for one or more users; a slide object database storing one or more slide objects, each slide object comprising: content distinct from the content object; and access control information controlling availability of each slide object to one or more users; a computing device comprising a memory, a processor, and computer program code stored in the memory and operative to cause the processor to: store slide objects received from remote hosts; access, in response to a request from a first client computing device operated by a first user, the slide object database to identify one or more slide objects available to the first user according to the access control information; transmit a response to the first client computing device, the response including at least one of the identified slide objects available to the first user.
 29. The system of claim 28, wherein the computer program code is further operative to cause the processor to: access, in response to a second request from a second client computing device operated by a second user, the slide object database to identify one or more slide objects available to the second user according to the access control information; and transmit a second response to the second client computing device, the second response including at least one of the identified slide objects available to the second user.
 30. A computer program product comprising computer program code stored on non-transitory, computer-readable media, the computer program code comprising instructions operative to cause a processor to: store slide objects received from remote hosts associated with users identified in the user account database; access, in response to a request from a first client computing device operated by a first user, the slide object database to retrieve one or more slide objects for the first user, wherein the access control information associated with each slide object controls at least in part whether a slide object is retrieved for the first user; transmit a response to the client computing device, the response including at least one of the retrieved slide objects; and control access to slide objects for transmitting of the response based on access control information of the slide objects.
 31. The computer program product of claim 30, the computer program code further comprising instructions operative to cause the processor to: receive a second request for one or more slide objects from a second client computing device operated by a second user, wherein the request identifies a content object; access, in response to the second request from the second client computing device, the slide object database to identify one or more slide objects that correspond to the content object; return at least one of the identified slide objects if the access control information of the one or more identified slide objects indicates that the second user is allowed access.
 32. A computer program product comprising computer program code stored on non-transitory, computer-readable media, the computer program code comprising instructions operative to cause a processor to, in connection with a target content object rendered by a client computing device: identify a slide object associated with but distinct from the target content object, the slide object defining an anchor point definition in the target content object; identify, in a representation of the target content object, at least one anchor point corresponding to the slide object, based on the anchor point definition; and render, at the client computing device, the content of the slide object as an overlay to the target content object, the slide object being rendered relative to the target content object in a position proximal to the identified anchor point.
 33. A computer program product comprising computer program code stored on non-transitory, computer-readable media, the computer program code comprising instructions operative to cause a processor to, in connection with a target content object rendered by a client computing device: identify one or more slide objects associated with but distinct from the target content object; access content corresponding to the one or more slide objects; and render at the client computing device the content of the one or more slide objects as an overlay to the target content object. 